package com.pxmeta.chat.entity.vo;

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

@Data
public class ChatMsgVO implements Serializable {

    @NotBlank
    @ApiModelProperty("消息类型：\n" +
            "- txt：文本消息；\n" +
            "- img：图片消息；\n" +
            "- audio：语音消息；\n" +
            "- video：视频消息；\n" +
            "- file：文件消息；\n" +
            "- loc：位置消息；\n" +
            "- cmd：透传消息；\n" +
            "- custom：自定义消息。")
    private String type;

    @NotEmpty
    @ApiModelProperty("消息接收方的用户 ID 数组。每次最多可向 600 个用户发送消息。")
    private List<String> to;

    @ApiModelProperty("消息发送方的用户 ID。若不传入该字段，服务器默认设置为管理员，即 “admin”；若传入字段但值为空字符串 (“”)，请求失败。")
    private String from;

    private JSONObject ext;

    @ApiModelProperty("消息发送成功后，是否将消息同步给发送方。默认false")
    @JsonProperty("sync_device")
    private Boolean syncDevice;

    @ApiModelProperty(value = "请求消息体")
    private JSONObject body;

}
